Skip to content

Conversation

@mizvekov
Copy link
Collaborator

@mizvekov mizvekov commented Oct 20, 2025

This change makes mrdocs use the system includes by default instead of the bundled ones.

This helps mrdocs build projects which rely on differences between standard library implementations, since now mrdocs sees the source code closer to what the original compiler did, with only potential differences in the compilers themselves and some minor command line manipulations remaining.

It also stops bundling the clang resource directory, relying on the one installed with libclang.
This makes it so installing both to the same prefix be necessary, which is the same as all the other libclang based tools.

@mizvekov mizvekov self-assigned this Oct 20, 2025
@mizvekov mizvekov force-pushed the default_use_system_libs branch from 45090b7 to 0bd333b Compare October 20, 2025 20:34
@codecov
Copy link

codecov bot commented Oct 20, 2025

Codecov Report

❌ Patch coverage is 89.47368% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.42%. Comparing base (c136a46) to head (d14c59c).
⚠️ Report is 1 commits behind head on develop.

Files with missing lines Patch % Lines
src/lib/MrDocsSettingsDB.cpp 0.00% 2 Missing ⚠️

❌ Your patch status has failed because the patch coverage (89.47%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #1077      +/-   ##
===========================================
+ Coverage    86.19%   86.42%   +0.23%     
===========================================
  Files          323      323              
  Lines        23954    23958       +4     
===========================================
+ Hits         20646    20706      +60     
+ Misses        3308     3252      -56     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mizvekov mizvekov force-pushed the default_use_system_libs branch from 0bd333b to 53cefa2 Compare October 21, 2025 16:31
@mizvekov mizvekov force-pushed the default_use_system_libs branch 3 times, most recently from 8e86b01 to e7ae03a Compare November 24, 2025 18:55
@mizvekov mizvekov force-pushed the default_use_system_libs branch 4 times, most recently from f739971 to 244d6ce Compare November 26, 2025 19:31
@mizvekov mizvekov force-pushed the default_use_system_libs branch 5 times, most recently from 44a71c2 to 350cc17 Compare December 3, 2025 18:45
@github-actions
Copy link

github-actions bot commented Dec 3, 2025

🚧 Danger.js checks for MrDocs are experimental; expect some rough edges while we tune the rules.

⚠️ Warnings

Warning

Some commits do not follow Conventional Commit first-line formatting (type(scope): subject): make the clang resource dir available to mrdocs, make tests independent of system lib, fixup, fixup, fixup Examples: fix: adjust docs link, feat(api): allow overrides.

✨ Highlights

  • 🧪 Existing golden tests changed (behavior likely shifted)

🧾 Changes by Scope

Scope Lines Δ Lines + Lines - Files Δ Files + Files ~ Files ↔ Files -
⚙️ CI 59 44 15 1 - 1 - -
🛠️ Source 48 30 18 6 - 6 - -
🧪 Unit Tests 46 41 5 4 1 3 - -
🥇 Golden Tests 43 21 22 6 1 5 - -
📄 Docs 31 25 6 3 - 3 - -
🏗️ Build / Toolchain 27 11 16 2 - 2 - -
🧰 Tooling 6 5 1 2 - 2 - -
Total 260 177 83 24 2 22 - -

Legend: Files + (added), Files ~ (modified), Files ↔ (renamed), Files - (removed)

🔝 Top Files

  • .github/workflows/ci.yml (CI): 59 lines Δ (+44 / -15)
  • test-files/golden-tests/symbols/function/sfinae.xml (Golden Tests): 34 lines Δ (+17 / -17)
  • test-files/include/type_traits (Unit Tests): 32 lines Δ (+32 / -0)

Generated by 🚫 dangerJS against d14c59c

@mizvekov mizvekov force-pushed the default_use_system_libs branch 12 times, most recently from bb8d10e to be98305 Compare December 5, 2025 20:40
@mizvekov mizvekov force-pushed the default_use_system_libs branch 5 times, most recently from a5c477b to 0c9fd10 Compare December 22, 2025 18:34
@mizvekov mizvekov force-pushed the default_use_system_libs branch 4 times, most recently from 3bf984d to 11a7b1e Compare December 29, 2025 15:01
@mizvekov mizvekov marked this pull request as ready for review December 29, 2025 15:05
@cppalliance-bot
Copy link

cppalliance-bot commented Dec 29, 2025

An automated preview of the documentation is available at https://1077.mrdocs.prtest2.cppalliance.org/index.html

If more commits are pushed to the pull request, the docs will rebuild at the same URL.

2026-01-13 12:47:49 UTC

Copy link
Collaborator

@alandefreitas alandefreitas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this PR has some content that is cognitively very hard to review it because it has many other changes unrelated to the main point of the PR, which is just changing the default. On the other hand, I understand that's the nature of the problem being solved here. 😅

I understand that changing the default is going to have implications in the sense that you have to do many other changes so that the new default doesn't break anything. And I also understand creating a PR for each of those changes would be huge and extremely unnecessary overhead. I don't want to impose any of that. I don't think we should impose rules where PRs cannot propose things in passing because that would create a necessary overhead for this project, and considering the actual state of the project, that's unreasonable. Maybe just separating commits that are unrelated to the problem is quite reasonable and makes review much easier (even though the GitHub UI unfortunately doesn't let us know where the change comes from if we choose to review the whole PR). 🙂

But from the point of reviewing it, because everything is in a single commit, it's really hard to review it because there are so many small changes in boring parts of the code far from each other involving build script, CI, and everything else. Those parts are disconnected, and there's no rationale for them. Anyone reviewing it just has to reverse engineer the code to figure out what's happening there. Even then, the person will figure out what's happening there, but not why that was necessary. Maybe another solution is just being more generous with comments, I guess. In fact I implemented a feature where we can now include comments in the C++ actions variables that for multi-line inputs like the case of the extended matrix handlebars templates. 😀

To be clear, I have no idea what the best solution for this is. But it's worth thinking about it. I mean all of us 😀. Maybe the best solution is just creating lots of commits and in the end, when the PR is about to be merged, we aggregate the commits that represent the same kind of feature into a single commit. So that the PR has rationale for the changes and the final PR has necessary structure for what users will see. But I'm not sure about any of that. We just have to think about that.

For now, for the small things, I'll just trust you to be honest. So, I'll just try to comment on whatever seems problematic to me because (maybe ironically) the bigger changes are easier to understand. At some point, I realized that was leaving a lot of comments just asking what things do and why they were there. I went back through my review at the end, deleting those comments because they were too repetitive. 😆

Anyway, the PR is pretty good. With the exception of the question about Mr.Docs' flags not being static for GCC, I think all other comments are mostly about ideas for brainstorming. (I also didn't really review the codecov issue because I know you're already on it)

@mizvekov mizvekov force-pushed the default_use_system_libs branch 2 times, most recently from cd8dd9f to 21ae97a Compare January 8, 2026 16:42
mizvekov and others added 5 commits January 9, 2026 14:27
This change makes mrdocs use the system includes by default instead of
the bundled ones.

This helps mrdocs build projects which rely on differences between
standard library implementations, since now mrdocs sees the source code
closer to what the original compiler did, with only potential differences in the
compilers themselves and some minor command line manipulations remaining.

It also stops bundling the clang resource directory, relying on the one
installed with libclang. This makes it so installing both to the same
prefix be necessary, which is the same as all the other libclang based tools.
@mizvekov mizvekov force-pushed the default_use_system_libs branch from 21ae97a to c47c61c Compare January 9, 2026 17:28
@mizvekov mizvekov force-pushed the default_use_system_libs branch from 8192afb to c5e5469 Compare January 12, 2026 18:35
Copy link
Collaborator

@alandefreitas alandefreitas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

@mizvekov mizvekov force-pushed the default_use_system_libs branch from c5e5469 to 0b24ce6 Compare January 13, 2026 12:09
@mizvekov mizvekov force-pushed the default_use_system_libs branch from 0b24ce6 to d14c59c Compare January 13, 2026 12:38
@mizvekov mizvekov merged commit 6cee4af into cppalliance:develop Jan 13, 2026
28 of 29 checks passed
@mizvekov mizvekov deleted the default_use_system_libs branch January 13, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants